#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,k,ans;
string s,A,B;
signed main(){
	freopen("lost.in","r",stdin);
	freopen("lost.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>n>>k;
	cin>>s>>A>>B;
	s=" R"+s; A=" "+A; B=" "+B;
	for(int i=1;i<=n;i++){
		if(s[i]=='R') s[i]='1';
		else s[i]='0';
	}
//	if(k==0){
		int opt=1;
		for(int i=1;i<=n;i++){
			if(s[i]==A[i]) continue;
			else if(s[i]>A[i]) break;
			else {opt=0;break;}
		}
		for(int i=1;i<=n;i++){
			if(s[i]==B[i]) continue;
			else if(s[i]<B[i]) break;
			else {opt=0;break;}
		}
		if(opt==1){
			for(int i=n,j=1;i>=1;i--,j=(j*2)%mod)
				if(s[i]=='1') ans=(ans+j)%mod;
		}
		for(int i=2;i<=n;i++) {
			if(s[i]=='1') s[i]='0';
			else s[i]='1';
		}
		opt=1;
		for(int i=1;i<=n;i++){
			if(s[i]==A[i]) continue;
			else if(s[i]>A[i]) break;
			else {opt=0;break;}
		}
		for(int i=1;i<=n;i++){
			if(s[i]==B[i]) continue;
			else if(s[i]<B[i]) break;
			else {opt=0;break;}
		}
		if(opt==1){
			for(int i=n,j=1;i>=1;i--,j=(j*2)%mod)
				if(s[i]=='1') ans=(ans+j)%mod;
		}
		cout<<ans;
		return 0;
//	}
	return 0;
}
/*
最高维不看
例如 10 = 1010
剩下 010 ，那么他就是 LRL 到的

*/
